﻿\subsection{外中断硬件初始化}

外中断经由中断控制器受理，本节简要介绍用于中断控制的 8259A 及发生时钟中断的 8253 定时器。

\subsubsection{外中断控制器}

CPU 处理的外中断实际上是经由可编程中断芯片（Programmable Interupt Chip）筛选后送入 INTR 引脚的，Intel 8259A 或 APIC（Advanced PIC）就是常见的 PIC。
本操作系统涉及到的外中断类型有限，故使用 Intel 8259A  \cite{8259a} 作为中断控制器 \footnote{Intel 80386 及之后的处理器中，8259A 中断控制器实际上是由 APIC 中断控制器提供的 8259A 兼容模式 \cite{ia32}}。

x86 处理器在使用 8259A 时采用两级级联的方式，从片接收的中断通过从片的 INTR 引脚发送给主片的 IRQ2 引脚（图 \ref{8259A_PIC}）。
从片上的中断处理完毕后，需由主片向从片传递 EOI（End Of Interrupt）信号。

\begin{figure}[h!]
    \Centering
    \caption{8259A 中断控制器}
    \label{8259A_PIC}
    \includegraphics[scale=0.75]{build/Paper/Assets/8259A.pdf}
\end{figure}

有关 8259A 中断控制器的设置方法参见。

\subsubsection{时钟控制器}

8259A \cite{8253} 接收的时钟中断信号实际上是由 8253 定时器发出的。
8253 定时器的定时功能实际上是由计数器提供的，使用时为 8253 定时器计数器初值寄存器中指定一轮计数的初值，启动计数器后计数器在每个时钟周期将该值减 1。
当计数器值减少到 0 时，8253 定时器将通过中断引脚向外发送中断信号，同时将初值寄存器中的初值载入，开启新一轮计数。
通过合理设置计数器初值和 8253 芯片工作频率，可使 8253 定时器以固定时钟周期向中断控制器发送中断信号。
